package com.chuangshu.chuangshuteam.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.chuangshu.chuangshuteam.dto.ApplicationDto;
import com.chuangshu.chuangshuteam.dto.Result;
import com.chuangshu.chuangshuteam.entity.Applications;
import com.chuangshu.chuangshuteam.vo.ApplicationVo;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author k
 * @since 2025-09-21
 */
public interface ApplicationsService extends IService<Applications> {
    Result submitApplication(ApplicationVo applicationVo);

    /**
     * 分页查询所有申请
     *
     * @param page      页码
     * @param pageSize  每页大小
     * @param direction
     * @return 分页结果
     */
    Result getByPage(Integer page, Integer pageSize, String direction);

    /**
     * 根据招聘周期ID查询所有申请
     * @param recruitmentCycleId 招聘周期ID
     * @return 申请列表
     */
    List<ApplicationDto> getApplicationsByRecruitmentCycleId(Long recruitmentCycleId);

    /**
     * 根据申请ID查询详细信息（包含关联文件）
     * @param id 申请ID
     * @return 申请详细信息
     */
    ApplicationDto getApplicationDetailById(Long id);

    /**
     * 更新申请信息
     * @param applicationVo 申请信息
     * @return 更新结果
     */
    Result updateApplication(ApplicationVo applicationVo);

    /**
     * 删除申请及其关联文件
     * @param id 申请ID
     * @return 删除结果
     */
    Result deleteApplication(Long id);

    Result getSelfApplications();

    /**
     * 用户删除自己的申请
     * @param id 申请ID
     * @return 删除结果
     */
    Result deleteSelfApplication(Long id);

}

